package dletc.view;

import dletc.pojo.Customer;
import dletc.service.CustomerList;
import dletc.util.CMUtility;

public class CustomerView {
	
	Customer customer = new Customer();
	
	CustomerList customerList = new CustomerList(10);
	
	//创建一个显示菜单的方法
	public void menu(){
		
		//开关
		boolean isFlag = true;
		
		//死循环菜单
		while(isFlag){
			
			System.out.println("\n-----------------客户信息管理软件-----------------\n");
			System.out.println("\t\t 1 添 加 客 户");
			System.out.println("\t\t 2 修 改 客 户");
			System.out.println("\t\t 3 删 除 客 户");
			System.out.println("\t\t 4 客 户 列 表");
			System.out.println("\t\t 5 退       出");
			
			System.out.print("\t 请选择(1-5)：");
			char num = CMUtility.readMenuSelection();
			
			switch(num){
				case '1':
					add();
					break;
				case '2':
					modify();
					break;
				case '3':
					del();
					break;
				case '4':
					select();
					break;
				case '5':
					System.out.print("确认是否退出(Y/N)：");
					char yn = CMUtility.readConfirmSelection();
					if(yn == 'Y')
						isFlag = false;
					break;
			}
		}
		
		
	}
	
	//设计增删改查方法
	public void add(){
		
		System.out.println("\n---------------------添加客户---------------------\n");
		System.out.print("姓名：");
		String name = CMUtility.readString(4);
		System.out.print("性别：");
		char readChar = CMUtility.readChar();
		System.out.print("年龄：");
		int readInt = CMUtility.readInt();
		System.out.print("电话：");
		String readString = CMUtility.readString(11);
		System.out.print("邮箱：");
		String email = CMUtility.readString(15);
		
		Customer cus = new Customer(name,readChar,readInt,readString,email);
		
		boolean addCustomer = customerList.addCustomer(cus);
		if(addCustomer){
			System.out.println("---------------------添加完成---------------------");
		}else{
			System.out.println("----------------记录已满,无法添加-----------------");
		}
			
		
	}
	
	public void modify(){
		System.out.println("\n---------------------修改客户列表---------------------\n");
		
		//给个提示 误操作，退出
		System.out.print("请输入要需改的编号(-1退出)：");
		//接收键盘输入
		int index = CMUtility.readInt();
		
		//index值进行判断   -1时退出程序
		if(index == -1){
			return;
		}
		//如果不是-1，要调用根据索引查数据的方法（用户输入的编号从1开始 索引是0开始，所以要-1）
		//先查询有没有该变量
		Customer cust = customerList.getIndex(index - 1);
		
		//如有没有数据，返回没有要修改的编号
		if(cust == null){
			System.out.println("查无此人");
		}else{
			
			//如果有数据，就显示出对应的信息，调用键盘录入功能，录入新的数据
			System.out.print("姓名：（" + cust.getName() + "):");
			//调用键盘录入功能  录入修改的信息，如果没修改 沿用当前信息  10是可以修改的长度
			String name = CMUtility.readString(4,cust.getName());
			
			//如果有数据，就显示出对应的信息，调用键盘录入功能，录入新的数据
			System.out.print("性别：（" + cust.getGender() + "):");
			//调用键盘录入功能  录入修改的信息，如果没修改 沿用当前信息  10是可以修改的长度
			char gender = CMUtility.readChar(cust.getGender());
			
			//如果有数据，就显示出对应的信息，调用键盘录入功能，录入新的数据
			System.out.print("年龄：（" + cust.getAge() + "):");
			//调用键盘录入功能  录入修改的信息，如果没修改 沿用当前信息  10是可以修改的长度
			int age = CMUtility.readInt(cust.getAge());
			
			//如果有数据，就显示出对应的信息，调用键盘录入功能，录入新的数据
			System.out.print("电话：（" + cust.getPhone() + "):");
			//调用键盘录入功能  录入修改的信息，如果没修改 沿用当前信息  10是可以修改的长度
			String phone = CMUtility.readString(11, cust.getPhone());
			
			//如果有数据，就显示出对应的信息，调用键盘录入功能，录入新的数据
			System.out.print("邮箱：（" + cust.getEmail() + "):");
			//调用键盘录入功能  录入修改的信息，如果没修改 沿用当前信息  10是可以修改的长度
			String email = CMUtility.readString(30, cust.getEmail());
			
			//将新的信息 封装到对象中
			Customer customer = new Customer(name, gender, age, phone, email);
			
			//调用修改数组的方法，将新的对象插入到数组中  index - 1  是因为index是编号  索引比编号少1
			boolean replaceCustomer = customerList.replaceCustomer(index - 1, customer);
			
			if(replaceCustomer){
				System.out.println("---------------------修改完成---------------------");
			}else{
				System.out.println("----------------修改失败-----------------");
			}
					
		}
	}
	
	public void select(){
		System.out.println("---------------------客户列表---------------------\n");
		
		//判断数据库内 有没有数据  
		//取出统计total属性
		int total = customerList.getTotal();
		
		if(total == 0){ //没有就输出暂无数据
			System.out.println("-------------暂无数据-------------");
		}else{ //有数据就遍历
			//调用控制层中 查询方法
			Customer[] all = customerList.getAll();
			//标题
			System.out.println("编号" + "\t姓名" + "\t性别" + "\t年龄" + "\t电话" + "\t邮箱");
			//遍历数组 i+1 是编号
			for (int i = 0; i < all.length; i++) {
				System.out.println((i + 1) + "\t" + all[i].getName() + "\t" + 
									all[i].getGender() + "\t" + all[i].getAge() + 
									"\t" + all[i].getPhone() + "\t" + all[i].getEmail());
			}
		}
		
	}
	
	public void del(){
		System.out.println("---------------------删除客户---------------------\n");
		//给个提示 误操作，退出
		System.out.print("请输入要删除的编号(-1退出)：");
		//接收键盘输入
		int index = CMUtility.readInt();
				
		//index值进行判断   -1时退出程序
		if(index == -1){
			return;
		}
		//如果不是-1，要调用根据索引查数据的方法（用户输入的编号从1开始 索引是0开始，所以要-1）
		//先查询有没有该变量
		Customer cust = customerList.getIndex(index - 1);
		//如有没有数据，返回没有要修改的编号
		if(cust == null){
			System.out.println("查无此人");
		}else{
			boolean delCustomer = customerList.delCustomer(index - 1);
			if(delCustomer){
				System.out.println("---------------------删除完成---------------------");
			}else{
				System.out.println("----------------删除失败-----------------");
			}
		}
		
		
		
		
		
	}
	
	

	public static void main(String[] args) {
		//C 视图层
		CustomerView view = new CustomerView();
		view.menu();

	}

}
